/*
 * XMLDocument.h
 *
 *  Created on: 16 mars 2011
 *      Author: bmaillot
 */

#ifndef XMLDOCUMENT_H_
#define XMLDOCUMENT_H_

#include <string>
#include <vector>
#include "Document.h"
#include "DTDDocument.h"
#include "XMLElement.h"
#include "XMLEntity.h"

class XMLDocument : public Document
{
	protected :

		/**
		 * La DTD associée au document
		 */
		DTDDocument* dtdDocument;

		/**
		 * Noeud principal contenant l'arborescence du document XML
		 */
		XMLElement* rootNode;

	public :
		XMLDocument();
		 ~XMLDocument();

			/**
			 * Ajouter un élèment dans le document
			 */

		void addElement(XMLElement* element);
		/**
		 * Définit le noeud XML principal
		 */
		void setRootNode(XMLElement* element);

		/**
		 * Définit la DTD à utiliser pour valider le document
		 */
		void setDtdDocument(DTDDocument* dtdDocument);

		/**
		 * Définit la DTD à utiliser pour valider le document
		 */
		DTDDocument* getDtdDocument();

		/*
		 * Vérifie la validité du document.
		 * 	TRUE : Erreur dans le document
		 *
		 * Si aucune DTD n'a été assignée au document : TRUE.
		 */
		bool checkDocumentValidity();
};

#endif /* XMLDOCUMENT_H_ */
